﻿using EventBus;
using LiteStep.Arbitrage;
using LiteStep.Conversions;
using LiteStep.Conversions.ConversionUpdaters;
using LiteStep.Currencies;
using LiteStep.DataSources.BtcE;
using LiteStep.DataSources.MtGox;
using LiteStep.DataSources.Vircurex;
using LiteStep.Exchanges.MtGox;
using LiteStep.Exchanges.Vircurex;
using LiteStep.Fees;
using LiteStep.Utils.Recorders;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LiteStep.Console
{
	class Program
	{
		private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
		static void Main(string[] args)
		{
            log4net.Config.XmlConfigurator.Configure();
            LiteStep.Initialize(logger: log);
            Init();

            System.Console.WriteLine("Back in Main");
            System.Console.ReadKey();

            System.Console.ReadKey();
		}

		static void Init()
		{
            //CreateMtGoxTickerWriters();

            //RegisterMtGoxTickerRecorders();

            //LiteStep.Ninjector.Get<MtGoxRestApi2>().Start(30);

            //CreateBtcETickerWriters();

            //RegisterBtcETickerRecorders();

            //LiteStep.Ninjector.Get<BtcERestApi2>().Start(30);

            //CreateVircurexTickerWriters();

			//RegisterVircurexTickerRecorders();

            //RegisterVircurexDepthRecorders();

            RegisterVircurexDepthConversionUpdaters();

            RegisterVircurexTiangleCalculators();

            CreateArbitrageWriter();

            LiteStep.Ninjector.Get<IFeeStructureManager>().Set<Vircurex>(new VircurexFeeStructure());

			LiteStep.Ninjector.Get<VircurexRestApi>().StartPollingForDepth(30);
		}

		public static void CreateMtGoxTickerWriters()
		{
            var eventBus = LiteStep.Ninjector.Get<IEventBus>();
            #region MtGox Ticker Writers
            var mtGoxBtcUsd = new MtGoxTickerWriter<Btc, Usd>(eventBus);
            var mtGoxBtcEur = new MtGoxTickerWriter<Btc, Eur>(eventBus);
            var mtGoxBtcJpy = new MtGoxTickerWriter<Btc, Jpy>(eventBus);
            var mtGoxBtcCad = new MtGoxTickerWriter<Btc, Cad>(eventBus);
            var mtGoxBtcGbp = new MtGoxTickerWriter<Btc, Gbp>(eventBus);
            var mtGoxBtcChf = new MtGoxTickerWriter<Btc, Chf>(eventBus);
            var mtGoxBtcRub = new MtGoxTickerWriter<Btc, Rub>(eventBus);
            var mtGoxBtcAud = new MtGoxTickerWriter<Btc, Aud>(eventBus);
            var mtGoxBtcSek = new MtGoxTickerWriter<Btc, Sek>(eventBus);
            var mtGoxBtcDkk = new MtGoxTickerWriter<Btc, Dkk>(eventBus);
            var mtGoxBtcHkd = new MtGoxTickerWriter<Btc, Hkd>(eventBus);
            var mtGoxBtcPln = new MtGoxTickerWriter<Btc, Pln>(eventBus);
            var mtGoxBtcCny = new MtGoxTickerWriter<Btc, Cny>(eventBus);
            var mtGoxBtcSgd = new MtGoxTickerWriter<Btc, Sgd>(eventBus);
            var mtGoxBtcThb = new MtGoxTickerWriter<Btc, Thb>(eventBus);
            var mtGoxBtcNzd = new MtGoxTickerWriter<Btc, Nzd>(eventBus);
            var mtGoxBtcNok = new MtGoxTickerWriter<Btc, Nok>(eventBus);
            #endregion
		}

        public static void RegisterMtGoxTickerRecorders()
        {
            #region MtGox Ticker Writers
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Usd>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Eur>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Jpy>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Cad>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Gbp>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Chf>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Rub>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Aud>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Sek>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Dkk>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Hkd>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Pln>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Cny>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Sgd>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Thb>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Nzd>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Nok>>>().Register();
            #endregion
        }

        public static void CreateBtcETickerWriters()
        {
            var eventBus = LiteStep.Ninjector.Get<IEventBus>();
            #region Btc-E Ticker Writers
            var btcEBtcUsd = new BtcETickerWriter<Btc, Usd>(eventBus);
            var btcEBtcRur = new BtcETickerWriter<Btc, Rur>(eventBus);
            var btcEBtcEur = new BtcETickerWriter<Btc, Eur>(eventBus);
            var btcELtcBtc = new BtcETickerWriter<Ltc, Btc>(eventBus);
            var btcELtcUsd = new BtcETickerWriter<Ltc, Usd>(eventBus);
            var btcELtcRur = new BtcETickerWriter<Ltc, Rur>(eventBus);
            var btcENmcBtc = new BtcETickerWriter<Nmc, Btc>(eventBus);
            var btcEUsdRur = new BtcETickerWriter<Usd, Rur>(eventBus);
            var btcEEurUsd = new BtcETickerWriter<Eur, Usd>(eventBus);
            var btcENvcBtc = new BtcETickerWriter<Nvc, Btc>(eventBus);
            var btcETrcBtc = new BtcETickerWriter<Trc, Btc>(eventBus);
            var btcEPpcBtc = new BtcETickerWriter<Ppc, Btc>(eventBus);
            var btcEFtcBtc = new BtcETickerWriter<Ftc, Btc>(eventBus);
            var btcECncBtc = new BtcETickerWriter<Cnc, Btc>(eventBus);
            #endregion
        }

        public static void RegisterBtcETickerRecorders()
        {
            #region Btc-E Ticker Recorders
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.BtcE.Ticker<Btc, Usd>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.BtcE.Ticker<Btc, Rur>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.BtcE.Ticker<Btc, Eur>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.BtcE.Ticker<Ltc, Btc>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.BtcE.Ticker<Ltc, Usd>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.BtcE.Ticker<Ltc, Rur>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.BtcE.Ticker<Nmc, Btc>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.BtcE.Ticker<Usd, Rur>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.BtcE.Ticker<Eur, Usd>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.BtcE.Ticker<Nvc, Btc>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.BtcE.Ticker<Trc, Btc>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.BtcE.Ticker<Ppc, Btc>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.BtcE.Ticker<Ftc, Btc>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.BtcE.Ticker<Cnc, Btc>>>().Register();
            #endregion
        }

        public static void CreateVircurexTickerWriters()
        {
            var eventBus = LiteStep.Ninjector.Get<IEventBus>();
            #region Vircurex Ticker Writers
            var vircurexBtcBqc = new VircurexTickerWriter<Btc, Bqc>(eventBus);
            var vircurexBtcCnc = new VircurexTickerWriter<Btc, Cnc>(eventBus);
            var vircurexBtcDvc = new VircurexTickerWriter<Btc, Dvc>(eventBus);
            var vircurexBtcEur = new VircurexTickerWriter<Btc, Eur>(eventBus);
            var vircurexBtcFrc = new VircurexTickerWriter<Btc, Frc>(eventBus);
            var vircurexBtcFtc = new VircurexTickerWriter<Btc, Ftc>(eventBus);
            var vircurexBtcIxc = new VircurexTickerWriter<Btc, Ixc>(eventBus);
            var vircurexBtcLtc = new VircurexTickerWriter<Btc, Ltc>(eventBus);
            var vircurexBtcNmc = new VircurexTickerWriter<Btc, Nmc>(eventBus);
            var vircurexBtcNvc = new VircurexTickerWriter<Btc, Nvc>(eventBus);
            var vircurexBtcPpc = new VircurexTickerWriter<Btc, Ppc>(eventBus);
            var vircurexBtcTrc = new VircurexTickerWriter<Btc, Trc>(eventBus);
            var vircurexBtcUsd = new VircurexTickerWriter<Btc, Usd>(eventBus);
            var vircurexBtcYac = new VircurexTickerWriter<Btc, Yac>(eventBus);

            var vircurexBqcBtc = new VircurexTickerWriter<Bqc, Btc>(eventBus);
            var vircurexBqcCnc = new VircurexTickerWriter<Bqc, Cnc>(eventBus);
            var vircurexBqcDvc = new VircurexTickerWriter<Bqc, Dvc>(eventBus);
            var vircurexBqcEur = new VircurexTickerWriter<Bqc, Eur>(eventBus);
            var vircurexBqcFrc = new VircurexTickerWriter<Bqc, Frc>(eventBus);
            var vircurexBqcFtc = new VircurexTickerWriter<Bqc, Ftc>(eventBus);
            var vircurexBqcIxc = new VircurexTickerWriter<Bqc, Ixc>(eventBus);
            var vircurexBqcLtc = new VircurexTickerWriter<Bqc, Ltc>(eventBus);
            var vircurexBqcNmc = new VircurexTickerWriter<Bqc, Nmc>(eventBus);
            var vircurexBqcNvc = new VircurexTickerWriter<Bqc, Nvc>(eventBus);
            var vircurexBqcPpc = new VircurexTickerWriter<Bqc, Ppc>(eventBus);
            var vircurexBqcTrc = new VircurexTickerWriter<Bqc, Trc>(eventBus);
            var vircurexBqcUsd = new VircurexTickerWriter<Bqc, Usd>(eventBus);
            var vircurexBqcYac = new VircurexTickerWriter<Bqc, Yac>(eventBus);

            var vircurexCncBtc = new VircurexTickerWriter<Cnc, Btc>(eventBus);
            var vircurexCncBqc = new VircurexTickerWriter<Cnc, Bqc>(eventBus);
            var vircurexCncDvc = new VircurexTickerWriter<Cnc, Dvc>(eventBus);
            var vircurexCncEur = new VircurexTickerWriter<Cnc, Eur>(eventBus);
            var vircurexCncFrc = new VircurexTickerWriter<Cnc, Frc>(eventBus);
            var vircurexCncFtc = new VircurexTickerWriter<Cnc, Ftc>(eventBus);
            var vircurexCncIxc = new VircurexTickerWriter<Cnc, Ixc>(eventBus);
            var vircurexCncLtc = new VircurexTickerWriter<Cnc, Ltc>(eventBus);
            var vircurexCncNmc = new VircurexTickerWriter<Cnc, Nmc>(eventBus);
            var vircurexCncNvc = new VircurexTickerWriter<Cnc, Nvc>(eventBus);
            var vircurexCncPpc = new VircurexTickerWriter<Cnc, Ppc>(eventBus);
            var vircurexCncTrc = new VircurexTickerWriter<Cnc, Trc>(eventBus);
            var vircurexCncUsd = new VircurexTickerWriter<Cnc, Usd>(eventBus);
            var vircurexCncYac = new VircurexTickerWriter<Cnc, Yac>(eventBus);

            var vircurexDvcBtc = new VircurexTickerWriter<Dvc, Btc>(eventBus);
            var vircurexDvcBqc = new VircurexTickerWriter<Dvc, Bqc>(eventBus);
            var vircurexDvcCnc = new VircurexTickerWriter<Dvc, Cnc>(eventBus);
            var vircurexDvcEur = new VircurexTickerWriter<Dvc, Eur>(eventBus);
            var vircurexDvcFrc = new VircurexTickerWriter<Dvc, Frc>(eventBus);
            var vircurexDvcFtc = new VircurexTickerWriter<Dvc, Ftc>(eventBus);
            var vircurexDvcIxc = new VircurexTickerWriter<Dvc, Ixc>(eventBus);
            var vircurexDvcLtc = new VircurexTickerWriter<Dvc, Ltc>(eventBus);
            var vircurexDvcNmc = new VircurexTickerWriter<Dvc, Nmc>(eventBus);
            var vircurexDvcNvc = new VircurexTickerWriter<Dvc, Nvc>(eventBus);
            var vircurexDvcPpc = new VircurexTickerWriter<Dvc, Ppc>(eventBus);
            var vircurexDvcTrc = new VircurexTickerWriter<Dvc, Trc>(eventBus);
            var vircurexDvcUsd = new VircurexTickerWriter<Dvc, Usd>(eventBus);
            var vircurexDvcYac = new VircurexTickerWriter<Dvc, Yac>(eventBus);

            var vircurexEurBtc = new VircurexTickerWriter<Eur, Btc>(eventBus);
            var vircurexEurBqc = new VircurexTickerWriter<Eur, Bqc>(eventBus);
            var vircurexEurCnc = new VircurexTickerWriter<Eur, Cnc>(eventBus);
            var vircurexEurDvc = new VircurexTickerWriter<Eur, Dvc>(eventBus);
            var vircurexEurFrc = new VircurexTickerWriter<Eur, Frc>(eventBus);
            var vircurexEurFtc = new VircurexTickerWriter<Eur, Ftc>(eventBus);
            var vircurexEurIxc = new VircurexTickerWriter<Eur, Ixc>(eventBus);
            var vircurexEurLtc = new VircurexTickerWriter<Eur, Ltc>(eventBus);
            var vircurexEurNmc = new VircurexTickerWriter<Eur, Nmc>(eventBus);
            var vircurexEurNvc = new VircurexTickerWriter<Eur, Nvc>(eventBus);
            var vircurexEurPpc = new VircurexTickerWriter<Eur, Ppc>(eventBus);
            var vircurexEurTrc = new VircurexTickerWriter<Eur, Trc>(eventBus);
            var vircurexEurUsd = new VircurexTickerWriter<Eur, Usd>(eventBus);
            var vircurexEurYac = new VircurexTickerWriter<Eur, Yac>(eventBus);

            var vircurexFrcBtc = new VircurexTickerWriter<Frc, Btc>(eventBus);
            var vircurexFrcBqc = new VircurexTickerWriter<Frc, Bqc>(eventBus);
            var vircurexFrcCnc = new VircurexTickerWriter<Frc, Cnc>(eventBus);
            var vircurexFrcDvc = new VircurexTickerWriter<Frc, Dvc>(eventBus);
            var vircurexFrcEur = new VircurexTickerWriter<Frc, Eur>(eventBus);
            var vircurexFrcFtc = new VircurexTickerWriter<Frc, Ftc>(eventBus);
            var vircurexFrcIxc = new VircurexTickerWriter<Frc, Ixc>(eventBus);
            var vircurexFrcLtc = new VircurexTickerWriter<Frc, Ltc>(eventBus);
            var vircurexFrcNmc = new VircurexTickerWriter<Frc, Nmc>(eventBus);
            var vircurexFrcNvc = new VircurexTickerWriter<Frc, Nvc>(eventBus);
            var vircurexFrcPpc = new VircurexTickerWriter<Frc, Ppc>(eventBus);
            var vircurexFrcTrc = new VircurexTickerWriter<Frc, Trc>(eventBus);
            var vircurexFrcUsd = new VircurexTickerWriter<Frc, Usd>(eventBus);
            var vircurexFrcYac = new VircurexTickerWriter<Frc, Yac>(eventBus);

            var vircurexFtcBtc = new VircurexTickerWriter<Ftc, Btc>(eventBus);
            var vircurexFtcBqc = new VircurexTickerWriter<Ftc, Bqc>(eventBus);
            var vircurexFtcCnc = new VircurexTickerWriter<Ftc, Cnc>(eventBus);
            var vircurexFtcDvc = new VircurexTickerWriter<Ftc, Dvc>(eventBus);
            var vircurexFtcEur = new VircurexTickerWriter<Ftc, Eur>(eventBus);
            var vircurexFtcFrc = new VircurexTickerWriter<Ftc, Frc>(eventBus);
            var vircurexFtcIxc = new VircurexTickerWriter<Ftc, Ixc>(eventBus);
            var vircurexFtcLtc = new VircurexTickerWriter<Ftc, Ltc>(eventBus);
            var vircurexFtcNmc = new VircurexTickerWriter<Ftc, Nmc>(eventBus);
            var vircurexFtcNvc = new VircurexTickerWriter<Ftc, Nvc>(eventBus);
            var vircurexFtcPpc = new VircurexTickerWriter<Ftc, Ppc>(eventBus);
            var vircurexFtcTrc = new VircurexTickerWriter<Ftc, Trc>(eventBus);
            var vircurexFtcUsd = new VircurexTickerWriter<Ftc, Usd>(eventBus);
            var vircurexFtcYac = new VircurexTickerWriter<Ftc, Yac>(eventBus);

            var vircurexIxcBtc = new VircurexTickerWriter<Ixc, Btc>(eventBus);
            var vircurexIxcBqc = new VircurexTickerWriter<Ixc, Bqc>(eventBus);
            var vircurexIxcCnc = new VircurexTickerWriter<Ixc, Cnc>(eventBus);
            var vircurexIxcDvc = new VircurexTickerWriter<Ixc, Dvc>(eventBus);
            var vircurexIxcEur = new VircurexTickerWriter<Ixc, Eur>(eventBus);
            var vircurexIxcFrc = new VircurexTickerWriter<Ixc, Frc>(eventBus);
            var vircurexIxcFtc = new VircurexTickerWriter<Ixc, Ftc>(eventBus);
            var vircurexIxcLtc = new VircurexTickerWriter<Ixc, Ltc>(eventBus);
            var vircurexIxcNmc = new VircurexTickerWriter<Ixc, Nmc>(eventBus);
            var vircurexIxcNvc = new VircurexTickerWriter<Ixc, Nvc>(eventBus);
            var vircurexIxcPpc = new VircurexTickerWriter<Ixc, Ppc>(eventBus);
            var vircurexIxcTrc = new VircurexTickerWriter<Ixc, Trc>(eventBus);
            var vircurexIxcUsd = new VircurexTickerWriter<Ixc, Usd>(eventBus);
            var vircurexIxcYac = new VircurexTickerWriter<Ixc, Yac>(eventBus);

            var vircurexLtcBtc = new VircurexTickerWriter<Ltc, Btc>(eventBus);
            var vircurexLtcBqc = new VircurexTickerWriter<Ltc, Bqc>(eventBus);
            var vircurexLtcCnc = new VircurexTickerWriter<Ltc, Cnc>(eventBus);
            var vircurexLtcDvc = new VircurexTickerWriter<Ltc, Dvc>(eventBus);
            var vircurexLtcEur = new VircurexTickerWriter<Ltc, Eur>(eventBus);
            var vircurexLtcFrc = new VircurexTickerWriter<Ltc, Frc>(eventBus);
            var vircurexLtcFtc = new VircurexTickerWriter<Ltc, Ftc>(eventBus);
            var vircurexLtcIxc = new VircurexTickerWriter<Ltc, Ixc>(eventBus);
            var vircurexLtcNmc = new VircurexTickerWriter<Ltc, Nmc>(eventBus);
            var vircurexLtcNvc = new VircurexTickerWriter<Ltc, Nvc>(eventBus);
            var vircurexLtcPpc = new VircurexTickerWriter<Ltc, Ppc>(eventBus);
            var vircurexLtcTrc = new VircurexTickerWriter<Ltc, Trc>(eventBus);
            var vircurexLtcUsd = new VircurexTickerWriter<Ltc, Usd>(eventBus);
            var vircurexLtcYac = new VircurexTickerWriter<Ltc, Yac>(eventBus);

            var vircurexNmcBtc = new VircurexTickerWriter<Nmc, Btc>(eventBus);
            var vircurexNmcBqc = new VircurexTickerWriter<Nmc, Bqc>(eventBus);
            var vircurexNmcCnc = new VircurexTickerWriter<Nmc, Cnc>(eventBus);
            var vircurexNmcDvc = new VircurexTickerWriter<Nmc, Dvc>(eventBus);
            var vircurexNmcEur = new VircurexTickerWriter<Nmc, Eur>(eventBus);
            var vircurexNmcFrc = new VircurexTickerWriter<Nmc, Frc>(eventBus);
            var vircurexNmcFtc = new VircurexTickerWriter<Nmc, Ftc>(eventBus);
            var vircurexNmcIxc = new VircurexTickerWriter<Nmc, Ixc>(eventBus);
            var vircurexNmcLtc = new VircurexTickerWriter<Nmc, Ltc>(eventBus);
            var vircurexNmcNvc = new VircurexTickerWriter<Nmc, Nvc>(eventBus);
            var vircurexNmcPpc = new VircurexTickerWriter<Nmc, Ppc>(eventBus);
            var vircurexNmcTrc = new VircurexTickerWriter<Nmc, Trc>(eventBus);
            var vircurexNmcUsd = new VircurexTickerWriter<Nmc, Usd>(eventBus);
            var vircurexNmcYac = new VircurexTickerWriter<Nmc, Yac>(eventBus);

            var vircurexNvcBtc = new VircurexTickerWriter<Nvc, Btc>(eventBus);
            var vircurexNvcBqc = new VircurexTickerWriter<Nvc, Bqc>(eventBus);
            var vircurexNvcCnc = new VircurexTickerWriter<Nvc, Cnc>(eventBus);
            var vircurexNvcDvc = new VircurexTickerWriter<Nvc, Dvc>(eventBus);
            var vircurexNvcEur = new VircurexTickerWriter<Nvc, Eur>(eventBus);
            var vircurexNvcFrc = new VircurexTickerWriter<Nvc, Frc>(eventBus);
            var vircurexNvcFtc = new VircurexTickerWriter<Nvc, Ftc>(eventBus);
            var vircurexNvcIxc = new VircurexTickerWriter<Nvc, Ixc>(eventBus);
            var vircurexNvcLtc = new VircurexTickerWriter<Nvc, Ltc>(eventBus);
            var vircurexNvcNmc = new VircurexTickerWriter<Nvc, Nmc>(eventBus);
            var vircurexNvcPpc = new VircurexTickerWriter<Nvc, Ppc>(eventBus);
            var vircurexNvcTrc = new VircurexTickerWriter<Nvc, Trc>(eventBus);
            var vircurexNvcUsd = new VircurexTickerWriter<Nvc, Usd>(eventBus);
            var vircurexNvcYac = new VircurexTickerWriter<Nvc, Yac>(eventBus);

            var vircurexPpcBtc = new VircurexTickerWriter<Ppc, Btc>(eventBus);
            var vircurexPpcBqc = new VircurexTickerWriter<Ppc, Bqc>(eventBus);
            var vircurexPpcCnc = new VircurexTickerWriter<Ppc, Cnc>(eventBus);
            var vircurexPpcDvc = new VircurexTickerWriter<Ppc, Dvc>(eventBus);
            var vircurexPpcEur = new VircurexTickerWriter<Ppc, Eur>(eventBus);
            var vircurexPpcFrc = new VircurexTickerWriter<Ppc, Frc>(eventBus);
            var vircurexPpcFtc = new VircurexTickerWriter<Ppc, Ftc>(eventBus);
            var vircurexPpcIxc = new VircurexTickerWriter<Ppc, Ixc>(eventBus);
            var vircurexPpcLtc = new VircurexTickerWriter<Ppc, Ltc>(eventBus);
            var vircurexPpcNmc = new VircurexTickerWriter<Ppc, Nmc>(eventBus);
            var vircurexPpcNvc = new VircurexTickerWriter<Ppc, Nvc>(eventBus);
            var vircurexPpcTrc = new VircurexTickerWriter<Ppc, Trc>(eventBus);
            var vircurexPpcUsd = new VircurexTickerWriter<Ppc, Usd>(eventBus);
            var vircurexPpcYac = new VircurexTickerWriter<Ppc, Yac>(eventBus);

            var vircurexTrcBtc = new VircurexTickerWriter<Trc, Btc>(eventBus);
            var vircurexTrcBqc = new VircurexTickerWriter<Trc, Bqc>(eventBus);
            var vircurexTrcCnc = new VircurexTickerWriter<Trc, Cnc>(eventBus);
            var vircurexTrcDvc = new VircurexTickerWriter<Trc, Dvc>(eventBus);
            var vircurexTrcEur = new VircurexTickerWriter<Trc, Eur>(eventBus);
            var vircurexTrcFrc = new VircurexTickerWriter<Trc, Frc>(eventBus);
            var vircurexTrcFtc = new VircurexTickerWriter<Trc, Ftc>(eventBus);
            var vircurexTrcIxc = new VircurexTickerWriter<Trc, Ixc>(eventBus);
            var vircurexTrcLtc = new VircurexTickerWriter<Trc, Ltc>(eventBus);
            var vircurexTrcNmc = new VircurexTickerWriter<Trc, Nmc>(eventBus);
            var vircurexTrcNvc = new VircurexTickerWriter<Trc, Nvc>(eventBus);
            var vircurexTrcPpc = new VircurexTickerWriter<Trc, Ppc>(eventBus);
            var vircurexTrcUsd = new VircurexTickerWriter<Trc, Usd>(eventBus);
            var vircurexTrcYac = new VircurexTickerWriter<Trc, Yac>(eventBus);

            var vircurexUsdBtc = new VircurexTickerWriter<Usd, Btc>(eventBus);
            var vircurexUsdBqc = new VircurexTickerWriter<Usd, Bqc>(eventBus);
            var vircurexUsdCnc = new VircurexTickerWriter<Usd, Cnc>(eventBus);
            var vircurexUsdDvc = new VircurexTickerWriter<Usd, Dvc>(eventBus);
            var vircurexUsdEur = new VircurexTickerWriter<Usd, Eur>(eventBus);
            var vircurexUsdFrc = new VircurexTickerWriter<Usd, Frc>(eventBus);
            var vircurexUsdFtc = new VircurexTickerWriter<Usd, Ftc>(eventBus);
            var vircurexUsdIxc = new VircurexTickerWriter<Usd, Ixc>(eventBus);
            var vircurexUsdLtc = new VircurexTickerWriter<Usd, Ltc>(eventBus);
            var vircurexUsdNmc = new VircurexTickerWriter<Usd, Nmc>(eventBus);
            var vircurexUsdNvc = new VircurexTickerWriter<Usd, Nvc>(eventBus);
            var vircurexUsdPpc = new VircurexTickerWriter<Usd, Ppc>(eventBus);
            var vircurexUsdTrc = new VircurexTickerWriter<Usd, Trc>(eventBus);
            var vircurexUsdYac = new VircurexTickerWriter<Usd, Yac>(eventBus);

            var vircurexYacBtc = new VircurexTickerWriter<Yac, Btc>(eventBus);
            var vircurexYacBqc = new VircurexTickerWriter<Yac, Bqc>(eventBus);
            var vircurexYacCnc = new VircurexTickerWriter<Yac, Cnc>(eventBus);
            var vircurexYacDvc = new VircurexTickerWriter<Yac, Dvc>(eventBus);
            var vircurexYacEur = new VircurexTickerWriter<Yac, Eur>(eventBus);
            var vircurexYacFrc = new VircurexTickerWriter<Yac, Frc>(eventBus);
            var vircurexYacFtc = new VircurexTickerWriter<Yac, Ftc>(eventBus);
            var vircurexYacIxc = new VircurexTickerWriter<Yac, Ixc>(eventBus);
            var vircurexYacLtc = new VircurexTickerWriter<Yac, Ltc>(eventBus);
            var vircurexYacNmc = new VircurexTickerWriter<Yac, Nmc>(eventBus);
            var vircurexYacNvc = new VircurexTickerWriter<Yac, Nvc>(eventBus);
            var vircurexYacPpc = new VircurexTickerWriter<Yac, Ppc>(eventBus);
            var vircurexYacTrc = new VircurexTickerWriter<Yac, Trc>(eventBus);
            var vircurexYacUsd = new VircurexTickerWriter<Yac, Usd>(eventBus);
            #endregion
        }

		public static void RegisterVircurexTickerRecorders()
        {
            #region Vircurex Ticker Recorders
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Btc, Bqc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Btc, Cnc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Btc, Dvc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Btc, Eur>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Btc, Frc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Btc, Ftc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Btc, Ixc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Btc, Ltc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Btc, Nmc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Btc, Nvc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Btc, Ppc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Btc, Trc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Btc, Usd>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Btc, Yac>>>().Register();

			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Bqc, Btc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Bqc, Cnc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Bqc, Dvc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Bqc, Eur>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Bqc, Frc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Bqc, Ftc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Bqc, Ixc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Bqc, Ltc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Bqc, Nmc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Bqc, Nvc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Bqc, Ppc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Bqc, Trc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Bqc, Usd>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Bqc, Yac>>>().Register();

			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Cnc, Btc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Cnc, Bqc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Cnc, Dvc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Cnc, Eur>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Cnc, Frc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Cnc, Ftc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Cnc, Ixc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Cnc, Ltc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Cnc, Nmc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Cnc, Nvc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Cnc, Ppc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Cnc, Trc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Cnc, Usd>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Cnc, Yac>>>().Register();

			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Dvc, Btc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Dvc, Bqc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Dvc, Cnc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Dvc, Eur>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Dvc, Frc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Dvc, Ftc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Dvc, Ixc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Dvc, Ltc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Dvc, Nmc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Dvc, Nvc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Dvc, Ppc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Dvc, Trc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Dvc, Usd>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Dvc, Yac>>>().Register();

			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Eur, Btc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Eur, Bqc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Eur, Cnc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Eur, Dvc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Eur, Frc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Eur, Ftc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Eur, Ixc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Eur, Ltc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Eur, Nmc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Eur, Nvc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Eur, Ppc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Eur, Trc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Eur, Usd>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Eur, Yac>>>().Register();

			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Frc, Btc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Frc, Bqc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Frc, Cnc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Frc, Dvc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Frc, Eur>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Frc, Ftc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Frc, Ixc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Frc, Ltc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Frc, Nmc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Frc, Nvc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Frc, Ppc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Frc, Trc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Frc, Usd>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Frc, Yac>>>().Register();

			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ftc, Btc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ftc, Bqc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ftc, Cnc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ftc, Dvc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ftc, Eur>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ftc, Frc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ftc, Ixc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ftc, Ltc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ftc, Nmc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ftc, Nvc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ftc, Ppc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ftc, Trc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ftc, Usd>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ftc, Yac>>>().Register();

			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ixc, Btc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ixc, Bqc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ixc, Cnc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ixc, Dvc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ixc, Eur>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ixc, Frc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ixc, Ftc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ixc, Ltc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ixc, Nmc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ixc, Nvc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ixc, Ppc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ixc, Trc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ixc, Usd>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ixc, Yac>>>().Register();

			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ltc, Btc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ltc, Bqc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ltc, Cnc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ltc, Dvc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ltc, Eur>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ltc, Frc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ltc, Ftc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ltc, Ixc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ltc, Nmc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ltc, Nvc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ltc, Ppc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ltc, Trc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ltc, Usd>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ltc, Yac>>>().Register();

			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Nmc, Btc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Nmc, Bqc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Nmc, Cnc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Nmc, Dvc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Nmc, Eur>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Nmc, Frc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Nmc, Ftc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Nmc, Ixc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Nmc, Ltc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Nmc, Nvc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Nmc, Ppc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Nmc, Trc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Nmc, Usd>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Nmc, Yac>>>().Register();

			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Nvc, Btc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Nvc, Bqc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Nvc, Cnc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Nvc, Dvc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Nvc, Eur>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Nvc, Frc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Nvc, Ftc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Nvc, Ixc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Nvc, Ltc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Nvc, Nmc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Nvc, Ppc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Nvc, Trc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Nvc, Usd>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Nvc, Yac>>>().Register();

			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ppc, Btc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ppc, Bqc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ppc, Cnc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ppc, Dvc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ppc, Eur>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ppc, Frc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ppc, Ftc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ppc, Ixc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ppc, Ltc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ppc, Nmc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ppc, Nvc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ppc, Trc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ppc, Usd>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Ppc, Yac>>>().Register();

			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Trc, Btc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Trc, Bqc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Trc, Cnc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Trc, Dvc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Trc, Eur>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Trc, Frc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Trc, Ftc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Trc, Ixc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Trc, Ltc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Trc, Nmc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Trc, Nvc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Trc, Ppc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Trc, Usd>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Trc, Yac>>>().Register();

			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Usd, Btc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Usd, Bqc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Usd, Cnc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Usd, Dvc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Usd, Eur>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Usd, Frc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Usd, Ftc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Usd, Ixc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Usd, Ltc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Usd, Nmc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Usd, Nvc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Usd, Ppc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Usd, Trc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Usd, Yac>>>().Register();

			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Yac, Btc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Yac, Bqc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Yac, Cnc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Yac, Dvc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Yac, Eur>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Yac, Frc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Yac, Ftc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Yac, Ixc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Yac, Ltc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Yac, Nmc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Yac, Nvc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Yac, Ppc>>>().Register();
			LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Yac, Trc>>>().Register();
            LiteStep.Ninjector.Get<ITickerRecorder<Exchanges.Vircurex.Ticker<Yac, Usd>>>().Register();
            #endregion
		}

        public static void RegisterVircurexDepthRecorders()
        {
            #region Vircurex Depth Recorders
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Btc, Bqc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Btc, Cnc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Btc, Dvc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Btc, Eur>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Btc, Frc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Btc, Ftc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Btc, Ixc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Btc, Ltc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Btc, Nmc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Btc, Nvc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Btc, Ppc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Btc, Trc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Btc, Usd>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Btc, Yac>>>().Register();

            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Bqc, Btc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Bqc, Cnc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Bqc, Dvc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Bqc, Eur>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Bqc, Frc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Bqc, Ftc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Bqc, Ixc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Bqc, Ltc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Bqc, Nmc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Bqc, Nvc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Bqc, Ppc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Bqc, Trc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Bqc, Usd>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Bqc, Yac>>>().Register();

            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Cnc, Btc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Cnc, Bqc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Cnc, Dvc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Cnc, Eur>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Cnc, Frc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Cnc, Ftc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Cnc, Ixc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Cnc, Ltc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Cnc, Nmc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Cnc, Nvc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Cnc, Ppc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Cnc, Trc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Cnc, Usd>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Cnc, Yac>>>().Register();

            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Dvc, Btc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Dvc, Bqc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Dvc, Cnc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Dvc, Eur>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Dvc, Frc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Dvc, Ftc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Dvc, Ixc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Dvc, Ltc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Dvc, Nmc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Dvc, Nvc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Dvc, Ppc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Dvc, Trc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Dvc, Usd>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Dvc, Yac>>>().Register();

            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Eur, Btc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Eur, Bqc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Eur, Cnc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Eur, Dvc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Eur, Frc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Eur, Ftc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Eur, Ixc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Eur, Ltc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Eur, Nmc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Eur, Nvc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Eur, Ppc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Eur, Trc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Eur, Usd>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Eur, Yac>>>().Register();

            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Frc, Btc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Frc, Bqc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Frc, Cnc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Frc, Dvc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Frc, Eur>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Frc, Ftc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Frc, Ixc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Frc, Ltc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Frc, Nmc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Frc, Nvc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Frc, Ppc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Frc, Trc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Frc, Usd>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Frc, Yac>>>().Register();

            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ftc, Btc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ftc, Bqc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ftc, Cnc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ftc, Dvc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ftc, Eur>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ftc, Frc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ftc, Ixc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ftc, Ltc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ftc, Nmc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ftc, Nvc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ftc, Ppc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ftc, Trc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ftc, Usd>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ftc, Yac>>>().Register();

            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ixc, Btc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ixc, Bqc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ixc, Cnc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ixc, Dvc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ixc, Eur>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ixc, Frc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ixc, Ftc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ixc, Ltc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ixc, Nmc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ixc, Nvc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ixc, Ppc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ixc, Trc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ixc, Usd>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ixc, Yac>>>().Register();

            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ltc, Btc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ltc, Bqc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ltc, Cnc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ltc, Dvc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ltc, Eur>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ltc, Frc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ltc, Ftc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ltc, Ixc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ltc, Nmc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ltc, Nvc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ltc, Ppc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ltc, Trc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ltc, Usd>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ltc, Yac>>>().Register();

            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Nmc, Btc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Nmc, Bqc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Nmc, Cnc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Nmc, Dvc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Nmc, Eur>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Nmc, Frc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Nmc, Ftc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Nmc, Ixc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Nmc, Ltc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Nmc, Nvc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Nmc, Ppc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Nmc, Trc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Nmc, Usd>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Nmc, Yac>>>().Register();

            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Nvc, Btc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Nvc, Bqc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Nvc, Cnc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Nvc, Dvc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Nvc, Eur>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Nvc, Frc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Nvc, Ftc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Nvc, Ixc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Nvc, Ltc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Nvc, Nmc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Nvc, Ppc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Nvc, Trc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Nvc, Usd>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Nvc, Yac>>>().Register();

            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ppc, Btc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ppc, Bqc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ppc, Cnc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ppc, Dvc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ppc, Eur>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ppc, Frc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ppc, Ftc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ppc, Ixc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ppc, Ltc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ppc, Nmc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ppc, Nvc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ppc, Trc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ppc, Usd>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Ppc, Yac>>>().Register();

            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Trc, Btc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Trc, Bqc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Trc, Cnc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Trc, Dvc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Trc, Eur>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Trc, Frc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Trc, Ftc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Trc, Ixc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Trc, Ltc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Trc, Nmc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Trc, Nvc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Trc, Ppc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Trc, Usd>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Trc, Yac>>>().Register();

            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Usd, Btc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Usd, Bqc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Usd, Cnc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Usd, Dvc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Usd, Eur>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Usd, Frc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Usd, Ftc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Usd, Ixc>>>().Register(); 
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Usd, Ltc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Usd, Nmc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Usd, Nvc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Usd, Ppc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Usd, Trc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Usd, Yac>>>().Register();

            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Yac, Btc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Yac, Bqc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Yac, Cnc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Yac, Dvc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Yac, Eur>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Yac, Frc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Yac, Ftc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Yac, Ixc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Yac, Ltc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Yac, Nmc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Yac, Nvc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Yac, Ppc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Yac, Trc>>>().Register();
            LiteStep.Ninjector.Get<IDepthRecorder<Exchanges.Vircurex.Depth<Yac, Usd>>>().Register();
            #endregion
        }

        public static void RegisterVircurexDepthConversionUpdaters()
        {
            #region Vircurex Depth Conversion Updaters
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Btc, Bqc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Btc, Cnc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Btc, Dvc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Btc, Eur>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Btc, Frc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Btc, Ftc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Btc, Ixc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Btc, Ltc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Btc, Nmc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Btc, Nvc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Btc, Ppc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Btc, Trc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Btc, Usd>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Btc, Yac>>().Register();

            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Bqc, Btc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Bqc, Cnc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Bqc, Dvc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Bqc, Eur>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Bqc, Frc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Bqc, Ftc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Bqc, Ixc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Bqc, Ltc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Bqc, Nmc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Bqc, Nvc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Bqc, Ppc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Bqc, Trc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Bqc, Usd>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Bqc, Yac>>().Register();

            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Cnc, Btc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Cnc, Bqc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Cnc, Dvc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Cnc, Eur>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Cnc, Frc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Cnc, Ftc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Cnc, Ixc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Cnc, Ltc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Cnc, Nmc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Cnc, Nvc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Cnc, Ppc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Cnc, Trc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Cnc, Usd>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Cnc, Yac>>().Register();

            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Dvc, Btc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Dvc, Bqc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Dvc, Cnc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Dvc, Eur>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Dvc, Frc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Dvc, Ftc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Dvc, Ixc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Dvc, Ltc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Dvc, Nmc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Dvc, Nvc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Dvc, Ppc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Dvc, Trc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Dvc, Usd>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Dvc, Yac>>().Register();

            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Eur, Btc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Eur, Bqc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Eur, Cnc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Eur, Dvc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Eur, Frc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Eur, Ftc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Eur, Ixc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Eur, Ltc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Eur, Nmc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Eur, Nvc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Eur, Ppc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Eur, Trc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Eur, Usd>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Eur, Yac>>().Register();

            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Frc, Btc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Frc, Bqc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Frc, Cnc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Frc, Dvc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Frc, Eur>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Frc, Ftc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Frc, Ixc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Frc, Ltc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Frc, Nmc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Frc, Nvc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Frc, Ppc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Frc, Trc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Frc, Usd>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Frc, Yac>>().Register();

            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ftc, Btc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ftc, Bqc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ftc, Cnc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ftc, Dvc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ftc, Eur>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ftc, Frc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ftc, Ixc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ftc, Ltc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ftc, Nmc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ftc, Nvc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ftc, Ppc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ftc, Trc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ftc, Usd>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ftc, Yac>>().Register();

            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ixc, Btc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ixc, Bqc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ixc, Cnc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ixc, Dvc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ixc, Eur>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ixc, Frc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ixc, Ftc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ixc, Ltc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ixc, Nmc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ixc, Nvc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ixc, Ppc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ixc, Trc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ixc, Usd>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ixc, Yac>>().Register();

            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ltc, Btc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ltc, Bqc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ltc, Cnc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ltc, Dvc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ltc, Eur>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ltc, Frc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ltc, Ftc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ltc, Ixc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ltc, Nmc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ltc, Nvc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ltc, Ppc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ltc, Trc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ltc, Usd>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ltc, Yac>>().Register();

            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Nmc, Btc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Nmc, Bqc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Nmc, Cnc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Nmc, Dvc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Nmc, Eur>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Nmc, Frc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Nmc, Ftc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Nmc, Ixc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Nmc, Ltc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Nmc, Nvc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Nmc, Ppc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Nmc, Trc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Nmc, Usd>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Nmc, Yac>>().Register();

            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Nvc, Btc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Nvc, Bqc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Nvc, Cnc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Nvc, Dvc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Nvc, Eur>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Nvc, Frc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Nvc, Ftc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Nvc, Ixc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Nvc, Ltc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Nvc, Nmc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Nvc, Ppc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Nvc, Trc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Nvc, Usd>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Nvc, Yac>>().Register();

            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ppc, Btc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ppc, Bqc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ppc, Cnc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ppc, Dvc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ppc, Eur>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ppc, Frc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ppc, Ftc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ppc, Ixc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ppc, Ltc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ppc, Nmc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ppc, Nvc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ppc, Trc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ppc, Usd>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Ppc, Yac>>().Register();

            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Trc, Btc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Trc, Bqc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Trc, Cnc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Trc, Dvc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Trc, Eur>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Trc, Frc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Trc, Ftc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Trc, Ixc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Trc, Ltc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Trc, Nmc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Trc, Nvc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Trc, Ppc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Trc, Usd>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Trc, Yac>>().Register();

            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Usd, Btc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Usd, Bqc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Usd, Cnc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Usd, Dvc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Usd, Eur>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Usd, Frc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Usd, Ftc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Usd, Ixc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Usd, Ltc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Usd, Nmc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Usd, Nvc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Usd, Ppc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Usd, Trc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Usd, Yac>>().Register();

            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Yac, Btc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Yac, Bqc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Yac, Cnc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Yac, Dvc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Yac, Eur>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Yac, Frc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Yac, Ftc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Yac, Ixc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Yac, Ltc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Yac, Nmc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Yac, Nvc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Yac, Ppc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Yac, Trc>>().Register();
            LiteStep.Ninjector.Get<VircurexDepthAskConversionUpdater<Yac, Usd>>().Register();
            #endregion
        }

        public static void RegisterVircurexTiangleCalculators()
        {
            var eventBus = LiteStep.Ninjector.Get<IEventBus>();

            TriangleCalculatorBuilder.CreateAndRegisterAllVircurexTriableCalculators(eventBus);
        }

        public static void CreateArbitrageWriter()
        {
            var eventBus = LiteStep.Ninjector.Get<IEventBus>();

            var arbitrageWriter = new ArbitrageWriter(eventBus);
        }
	}
}
